package main

import (
	"fmt"
	"github.com/spf13/viper"
	"os"
	"strings"
)

//enabled: true
//path: /usr/local
//spring:
//  redis:
//    host: "redis.dns.baidu.com"
//    port: 6379
func init() {

	viper.SetConfigFile("hello.yaml") //文件名
	viper.Set("hosts", []string{"localhost", "172.29.49.141", "172.29.49.144", "127.0.0.1"})
	viper.Set("spring.redis.port", "6379")
	viper.Set("spring.redis.database", 2)
	viper.Set("spring.redis.host", "127.0.0.1")
	err := viper.WriteConfig() //写入文件
	if err != nil {            // Handle errors reading the config file
		panic(fmt.Errorf("Fatal error config file: %s \n", err))
	}

}
func main() {
	//获取项目的执行路径
	path, err := os.Getwd()
	if err != nil {
		panic(err)
	}
	config := viper.New()
	config.SetEnvPrefix("hello")
	config.AutomaticEnv()
	config.AddConfigPath(path)
	replacer := strings.NewReplacer(".", "_")
	config.SetEnvKeyReplacer(replacer)
	config.SetConfigName("hello")
	config.SetConfigType("yaml")
	//"cannot unmarshal !!seq into string" 需要排查读取到同名不同后缀的其他文件配置，如这里需要读hello.yaml，但是hello.toml被读取到了
	//尝试进行配置读取
	if err := config.ReadInConfig(); err != nil {
		panic(fmt.Errorf("Fatal error config file: %s \n", err))
	}
	fmt.Println(config.GetStringSlice("hosts"))
	fmt.Println(config.GetInt("spring.redis.port"))
}
